#include "widget.h"
#include "ui_widget.h"
#include <QIcon>

#include "kwindowsystem.h"
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    this->setWindowIcon(QIcon::fromTheme("distributor-logo-kylin"));
    this->setWindowTitle("窗口不在任务栏显示 展示用例");

    windowSkipTaskbarMothod_3();

}

Widget::~Widget()
{
    delete ui;
}

/**
 * @brief Widget::windowSkipTaskbarMothod_1
 * 隐藏Popup类型窗口，
 * 点击外部窗口会隐藏
 * 最常用的方法之一，声音，网络的界面都使用的是这个窗口属性
 * 会屏蔽全局热键
 */
void Widget::windowSkipTaskbarMothod_1()
{
    setWindowFlags(Qt::Popup);
}

/**
 * @brief Widget::windowSkipTaskbarMothod_2
 * 隐藏QTool 类型窗口
 * 综合对比uos，windows，以及客户的反馈，屏蔽此类型窗口
 * 点击窗口外部不会隐藏 不会屏蔽全局热键
 */
void Widget::windowSkipTaskbarMothod_2()
{
    setWindowFlags(Qt::Tool);
}

/**
 * @brief Widget::windowSkipTaskbarMothod_3
 * 应用设置 窗口status为SkipTaskbar
 * 这样可能存在的弊端是出现重影等问题
 */
void Widget::windowSkipTaskbarMothod_3()
{
    KWindowSystem::setState(this->winId(),NET::SkipTaskbar | NET::SkipPager);
}

/**
 * @brief Widget::windowSkipTaskbarMothod_4
 * X11BypassWindowManagerHint 不会屏蔽全局热键，点击窗口外部不会消失
 * 需要应用能够处理点击外部窗口消失的问题
 */
void Widget::windowSkipTaskbarMothod_4()
{
    setWindowFlags(Qt::X11BypassWindowManagerHint);
}

/**
 * @brief Widget::windowSkipTaskbarMothod_4
 * 其他不常用的一些属性设置，隐患较多
 * ToolTip 属性损失太多_NET_WM_ALLOWED_ACTIONS(ATOM) 直接无法看到
 * 如果弹出窗口设置了这个属性那么点击外部窗口不会隐藏，不会屏蔽全局热键
 */
void Widget::windowSkipTaskbarMothod_5()
{
    setWindowFlags(Qt::ToolTip);
}
